﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

//1. Khai báo sử dụng thư viện
using Y2015CS68LIB.OOP_LIB.EX02;

namespace Y2015CS68APPS.OOP.EXCERCISES.EX02
{
    public partial class VIEWS : Form
    {
        public VIEWS()
        {
            InitializeComponent();           
        }

        private void btntinhtoan_Click(object sender, EventArgs e)
        {
            //1. Kiểm tra trạng thái các điều khiển trên forms
            if(string.IsNullOrEmpty(txta.Text)){
                errorProvider1.SetError(txta,"....");
            }
            else if (string.IsNullOrEmpty(txtb.Text))
            {
                errorProvider1.SetError(txtb,"....");
            }
            else if (string.IsNullOrEmpty(cbopheptoan.Text))
            {
                errorProvider1.SetError(cbopheptoan,"....");
            }
            else
            {
                //2. Kiểm tra giá trị có hợp lệ?
                double a = 0;
                double b = 0;
                if(!double.TryParse(txta.Text, out a)){
                    errorProvider1.SetError(txta, "...");
                }
                else if (!double.TryParse(txtb.Text, out b))
                {
                    errorProvider1.SetError(txtb, "...");
                }
                else
                {
                    //3. Ủy quyền thực thi nghiệp vụ
                    //a. Kb đối tượng
                    CONTROLLERS objController = new CONTROLLERS();

                    //b. Khởi tạo đối tượng Entity
                    Entity objEntity = new Entity();
                    objEntity.a = a;
                    objEntity.b = b;

                    //c. Kiểm tra sự lựa chọn & điều hướng xử lý phù hợp
                    if(cbopheptoan.SelectedIndex == 3){
                        if (a == 0 && b == 0)
                            txtketqua.Text = "Result of function is underfined";
                        else if (a != 0 && b == 0)
                            txtketqua.Text = "Cannot divide by zero";
                        else
                            txtketqua.Text = ""+objController.
                                        doCalculator(objEntity, 
                                                    (short)cbopheptoan.SelectedIndex);                        
                    }
                    else
                        txtketqua.Text = "" + objController.
                                        doCalculator(objEntity,
                                                    (short)cbopheptoan.SelectedIndex);
                }
            }
        }
        
    }
}
